/*
	Title: fifo

	Este fichero se encarga de las COLAS de funciones 
	La clase xFuncFIFO crea una COLA que permite anidar referencias a funciones para despues invocarlas.
*/


function xFuncFIFO()
{
	this.FIFO = new Array();
	this.num = 0;
}

xFuncFIFO.prototype = 
{
	// Añade una función a la COLA
	add: function(func, object)
	{
		this.FIFO[this.num] = new Array()
		this.FIFO[this.num] = {	"func": 	func,
								"object":	object };
		this.num++;
	},

	// Saca una función de la cola y la ejecuta
	next: function()
	{
		if(this.num > 0)
		{
			var func = this.FIFO[0].func;
			var object = this.FIFO[0].object;

			if(func)
			{
				if(object)
					setTimeout(function() { func.call(object); }, 1);
				else
					setTimeout(function() { func.call(); }, 1);
			}

			var i = 0;
			for(i = 0; this.FIFO[i + 1]; i++)
				this.FIFO[i] = this.FIFO[i + 1];

			if(this.FIFO[i])
			{
				delete this.FIFO[i];
				this.FIFO[i] = null;
			}
			
			this.num--;
		}
	}
}
	
